package cn.iocoder.yudao.module.of.service.schedulecenter;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.of.controller.admin.schedulecenter.vo.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.of.controller.admin.taskinfo.vo.TaskInfoRespVO;
import com.alibaba.fastjson.JSONObject;

/**
 * 日程中心 信息 Service 接口
 *
 * @author 超级管理员
 */
public interface ScheduleCenterService {

    /**
     * 创建日程中心 信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createScheduleCenter(@Valid ScheduleCenterSaveReqVO createReqVO);

    /**
     * 更新日程中心 信息
     *
     * @param updateReqVO 更新信息
     */
    void updateScheduleCenter(@Valid ScheduleCenterSaveReqVO updateReqVO);

    /**
     * 删除日程中心 信息
     *
     * @param id 编号
     */
    void deleteScheduleCenter(Long id);

    /**
     * 获得日程中心 信息
     *
     * @param id 编号
     * @return 日程中心 信息
     */
    ScheduleCenterRespVO getScheduleCenter(Long id);

    TaskInfoRespVO getTaskInfo(Long id);

    /**
     * 获得日程中心 信息分页
     *
     * @param pageReqVO 分页查询
     * @return 日程中心 信息分页
     */
    PageResult<ScheduleCenterRespVO> getScheduleCenterPage(ScheduleCenterPageReqVO pageReqVO);

    List<ScheduleCenterRespVO>  getScheduleCenterList(ScheduleCenterPageReqVO pageReqVO);



    JSONObject getListGroupDay(ScheduleCenterPageReqVO pageReqVO);

    /**
     * 获取日程 看板列表
     * @param pageReqVO
     * @return
     */
    JSONObject getScheduleCenterBoradList(ScheduleCenterBordReqVo pageReqVO);

    List getAllYearTaskList(ScheduleCenterBordReqVo reqVO);


    List userTree(List<String> userList);

    List<JSONObject> getSubDeptAndUser(Long deptId);
}